WebIOPiを使ってブラウザからRaspberry PiのGPIOを操作してみる
どうも!大阪オフィスの西村祐二です。
最近、Raspberry Piをよくさわります。
PCやスマホのブラウザからRaspberry Pi を操作してみたいということはよくあると思います。
今回は、WebIOPiというものを使ってブラウザからRaspberry PiのGPIOを操作してみたいと思います。
WebIOPiとは?
Raspberry Piにインストールして実行するとwebサーバを立ててくれて、ブラウザからGPIOの操作や、Raspberry Pi内のPythonプログラムを実行できるようにしてくれます。また内部ではPython3を利用しています。
では、さっそくやっていきましょう!
環境
- Raspberry Pi
- Raspberry Pi 3 Model B
- Linux raspberrypi 4.9.59-v7+ #1047 SMP Sun Oct 29 12:19:23 GMT 2017 armv7l GNU/Linux
- Python
- Python 3.5.3
WebIOPiのインストール
ラズパイにログインし、適当なところで作業します。今回は~/work
配下で作業を行っています。
- WebIOPi をダウンロードします。(2018/5/24現在、最新バージョンは 0.7.1 なので、WebIOPi-0.7.1.tar.gz をダウンロードします。)
$ wget https://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz
- ダウンロードしたファイルを解凍し、ディレクトリ移動します。
$ tar xvzf WebIOPi-0.7.1.tar.gz $ cd WebIOPi-0.7.1
- ブラウザで表示するGPIOの表示を修正するパッチを適用します。
$ wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch $ patch -p1 -i webiopi-pi2bplus.patch
- セットアップスクリプトを実行します。
$ sudo ./setup.sh
セットアップ画面が「Do you want to access WebIOPi over Internet ? [y/n]」で止まったら、「n」を入力し、エンターキーを押します。(「y」を入力し、エンターキーを押すと、「Weaved IoT Kit」がインストールされます。)
- WebIOPiサービスを
systemctl
で操作できるようにするため設定ファイルをダウンロードします。
$ cd /etc/systemd/system/ $ sudo wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi.service
WebIOPi サービスのStart、Stop、Status、resatart
startでサービスを起動できます。
$ sudo systemctl start webiopi
stopでサービスを停止できます。
$ sudo systemctl stop webiopi
webサーバが起動してこない場合はstatusで状況を確認できます
$ sudo systemctl statu webiopi
restartでサービスの停止と起動をまとめて実行できます。
$ sudo systemctl restart webiopi
動作確認
- ブラウザからWebIOPiにアクセスしてみます。
ブラウザからhttp:<ラズパイのIP>:8000
にアクセスします。
認証ダイアログが表示されるので、
ユーザー名:webiopi
パスワード:raspberry
でログインすることができます。
ログイン後は、以下のようなページが表示されます。
- GPIOの操作をしてみます。
「GPIO Header」を選択すると、GPIOピンの状態(OUT/IN)を確認・変更できる画面が表示されます。
ラズパイ側の回路はこんな感じです。いつものようにLEDを配線します。今回はGPIO2(3番ピン)を使用しています。
ブラウザからクリックすると対象のGPIOを制御でき、LEDを点灯や消灯させることができます。
さいごに
いかがだったでしょうか
WebIOPiを使ってブラウザからRaspberry PiのGPIOを操作してみました。
次はRaspberry Pi内にあるPythonプログラムをブラウザから実行してみたいと思います。
だれかの参考になれば幸いです。